var DataTypes = require("sequelize").DataTypes;

/**
 * 系统业务模型
*/
var _SysUser = require("./User");
var _SysRole = require("./Role");
var _SysMenu = require("./Menu");
var _SysDept = require("./Dept");
var _SysRoleMenu = require("./RoleMenu");

function systemInitModels(sequelize) {
  var SysUser = _SysUser(sequelize, DataTypes);
  var SysRole = _SysRole(sequelize, DataTypes);
  var SysMenu = _SysMenu(sequelize, DataTypes);
  var SysDept = _SysDept(sequelize, DataTypes);
  var SysRoleMenu = _SysRoleMenu(sequelize, DataTypes);

  SysDept.hasMany(SysUser, { foreignKey: 'dept_id' }); // 一部门多员工 
  SysUser.belongsTo(SysDept, { foreignKey: 'dept_id' }); // 一员工一部门

  // SysRole.belongsToMany(SysUser, { through: SysUserRole });
  // SysUser.belongsToMany(SysRole, { through: SysUserRole });

  SysRole.belongsToMany(SysMenu, {
    through: SysRoleMenu,
    foreignKey: 'roleId', // 你的数据库中的角色外键列名
    otherKey: 'menuId',   // 你的数据库中的菜单外键列名 
  });
  SysMenu.belongsToMany(SysRole, {
    through: SysRoleMenu,
    foreignKey: 'menuId', // 你的数据库中的角色外键列名
    otherKey: 'roleId',   // 你的数据库中的菜单外键列名 
  });
  return {
    SysMenu,
    SysRole,
    SysRoleMenu,
    SysUser,
    SysDept
  };
}
module.exports = systemInitModels;
module.exports.SystemInitModels = systemInitModels;
module.exports.default = systemInitModels;
